/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package runebound.manejadores.aventura;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import runebound.basedatos.RBConexion;
import runebound.modelo.Ciudad;
import runebound.modelo.Mazo;
import runebound.modelo.TipoAmenaza;
import runebound.modelo.heores.items.Item;
import runebound.modelo.monstruos.Monstruo;

/**
 *
 * @author Miguel (alakat@gmail.com)
 */
public class RBControladorAventura {
    private Mazo<Monstruo> verdes;
    private Mazo<Item> objetos;
    private Map<Ciudad,List> mercados;

    public RBControladorAventura() {
        this.verdes = new Mazo<>(RBConexion.getInstance().allMonstruo());
        this.objetos = RBConexion.getInstance().allItems();
        List<Ciudad> ciudades = RBConexion.getInstance().getCiudades();
        this.mercados = new HashMap<>();
        for (Ciudad ciudad : ciudades) {
            this.mercados.put(ciudad, new ArrayList<Item>());
        }
    }
    
    /**
     * Genera un nuevo mostruo, baraja el descarte si es necesario
     * @return 
     */
    private Monstruo getNuevoMonstruoVerde(){
        return this.verdes.cogerYDescartar();
    }

    public Monstruo getNuevoMonstruo(TipoAmenaza amenaza) {
        //TODO distinguir tipo amenaza
        return getNuevoMonstruoVerde();  
    }
    
    /**
     * Obtiene el mercado de una ciudad
     * @param c
     * @return 
     */
    public List<Item> mercado(Ciudad c){
        return this.mercados.get(c);
    }
    
    /**
     * Robamos 
     * @param ciudad
     * @return 
     */
    public List<Item> nuevoItemMercado(Ciudad ciudad){
        Item nuevo = this.objetos.coger();
        List<Item> mercado = this.mercados.get(ciudad);
        mercado.add(nuevo);
        return mercado;
    }

    
    
}
